package com.smart.community.region.dto;

import java.time.LocalDate;

import com.smart.community.commons.base.BaseDTO;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 新增住户DTO
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class ResidentAddDTO extends BaseDTO {
    /**
	 * @author Wu.Liang
	 * @date 2025年8月8日
	 */
	private static final long serialVersionUID = 2011065406436933622L;

	/**
     * 住户姓名
     */
    private String realName;

    /**
     * 身份证件类型：1-身份证，2-护照，3-港澳通行证，4-台湾通行证
     */
    private Integer identityType;

    /**
     * 身份证件号
     */
    private String identityNo;

    /**
     * 手机号
     */
    private String phone;

    /**
     * 性别：0-未知，1-男，2-女
     */
    private Integer gender;

    /**
     * 出生日期
     */
    private LocalDate birthday;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 联系地址
     */
    private String address;

    /**
     * 学历
     */
    private String education;

    /**
     * 职业
     */
    private String profession;

    /**
     * 工作单位
     */
    private String workUnit;

    /**
     * 籍贯
     */
    private String nativePlace;

    /**
     * 紧急联系人
     */
    private String emergencyContact;

    /**
     * 紧急联系电话
     */
    private String emergencyPhone;

    /**
     * 车辆信息
     */
    private String vehicleInfo;

    /**
     * 宠物信息
     */
    private String petInfo;



    /**
     * 特殊需求
     */
    private String specialNeeds;

    /**
     * 相关证件图片（JSON数组）
     */
    private String images;

    /**
     * 住户状态：0-已搬出，1-正常居住，2-暂时外出
     */
    private Integer status;

    /**
     * 备注信息
     */
    private String remark;

    /**
     * 房户ID
     */
    private Long householdId;

    // =============== 住户房户关联信息 ===============
    
    /**
     * 住户身份：1-户主，2-家庭成员，3-租客，4-临时居住
     */
    private Integer residentType;

    /**
     * 入住日期
     */
    private LocalDate moveInDate;

    /**
     * 搬出日期
     */
    private LocalDate moveOutDate;

    /**
     * 合同开始日期(租客)
     */
    private LocalDate contractStartDate;

    /**
     * 合同结束日期(租客)
     */
    private LocalDate contractEndDate;

    /**
     * 月租金(租客)
     */
    private java.math.BigDecimal monthlyRent;

    /**
     * 押金(租客)
     */
    private java.math.BigDecimal deposit;

    /**
     * 合同编号(租客)
     */
    private String contractNo;
} 